home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Magazin / Future-PD / Kikstart / kik.amos / kik.amosSourceCode
AMOS Source Code  |  2000-05-16  |  18KB  |  769 lines

  1. Set Buffer 32
  2. If Prg State=-1 Then Break Off 
  3. If Prg State=-1 Then Amos Lock 
  4. MYOFS=51
  5. SONICMODE=0
  6. LEVELS=20
  7. Screen Open 1,320,256,32,Lowres
  8. Hide 
  9. Flash Off 
  10. Curs Off 
  11. Load "fire.animfont"
  12. Get Sprite Palette 
  13. Ink 0
  14. Bar 0,0 To 320,245
  15. Screen Open 2,320,256,32,Lowres
  16. Flash Off 
  17. Curs Off 
  18. Get Palette 1
  19. Ink 0
  20. Bar 0,0 To 320,256
  21. Screen Open 3,320,256,32,Lowres
  22. Flash Off 
  23. Curs Off 
  24. Get Palette 1
  25. Ink 0
  26. Bar 0,0 To 320,256
  27. Screen Open 0,320,256,2,Lowres
  28. Flash Off 
  29. Curs Off 
  30. Ink 0
  31. Bar 0,0 To 320,256
  32. Dim DAT(1000)
  33. Open In 4,"intro.text"
  34. TL=1
  35. Repeat 
  36.    Input #4,DAT(TL)
  37.    TL=TL+1
  38. Until Eof(4)
  39. Close 4
  40. Screen To Front 0
  41. ZEILE=0
  42. LAEN=0
  43. DAUER=10
  44. Dim BLOCK(16,8)
  45. Dim ZLAEN(8)
  46. Procedure CLEARSCREENS
  47.    Screen 0
  48.    Ink 0
  49.    Bar 0,0 To 320,256
  50.    Screen 1
  51.    Ink 0
  52.    Bar 0,0 To 320,256
  53.    Screen 2
  54.    Ink 0
  55.    Bar 0,0 To 320,256
  56.    Screen 3
  57.    Ink 0
  58.    Bar 0,0 To 320,256
  59. End Proc
  60. Procedure RENDERWAHNSINN
  61.    Shared BLOCK(),ZLAEN(),ZEILE
  62.    CLEARSCREENS
  63.    Screen To Front 0
  64.    For ZE=0 To ZEILE+1
  65.       If ZLAEN(ZE)=0 Then Goto NAECHSTEZEILE
  66.       For SP=1 To ZLAEN(ZE)
  67.          If BLOCK(SP,ZE)=0 Then Goto NAECHSTESZEICHEN
  68.          X=20*SP+(280-(ZLAEN(ZE)*20))/2
  69.          Y=40*(ZE+1)
  70.          Screen 1
  71.          Paste Bob X,Y,BLOCK(SP,ZE)
  72.          Screen 2
  73.          Paste Bob X,Y,BLOCK(SP,ZE)+50
  74.          Screen 3
  75.          Paste Bob X,Y,BLOCK(SP,ZE)+100
  76.          NAECHSTESZEICHEN:
  77.       Next 
  78.       NAECHSTEZEILE:
  79.    Next 
  80. End Proc
  81. Procedure ANM
  82.    Shared DAUER,SKIP
  83.    SKIP=0
  84.    For C=1 To DAUER/3
  85.       For D=1 To 3
  86.          Screen To Front D
  87.          Wait 5
  88.          If Mouse Click Then SKIP=1 : Exit 2
  89.          If Inkey$<>"" Then SKIP=1 : Exit 2
  90.          If Fire(1) Then SKIP=1 : Exit 2
  91.       Next 
  92.    Next 
  93.    Screen 0
  94.    Screen To Front 
  95. End Proc
  96. Track Load Dir$+"funkey.mod",6
  97. Track Loop On 
  98. Track Play 6
  99. For I=1 To TL
  100.    If SKIP=1 Then Exit 
  101.    If DAT(I)=42 Then CLEARSCREENS : ZEILE=0 : LAEN=0 : DAUER=10 : Goto DERNAECHSTEBITTE
  102.    If DAT(I)=43 Then ZLAEN(ZEILE)=LAEN : ZEILE=ZEILE+1 : LAEN=0 : Goto DERNAECHSTEBITTE
  103.    If DAT(I)=44 Then ZLAEN(ZEILE)=LAEN : RENDERWAHNSINN : Wait 2 : ANM : Screen To Front 0 : Goto DERNAECHSTEBITTE
  104.    LAEN=LAEN+1
  105.    BLOCK(LAEN,ZEILE)=DAT(I)
  106.    DAUER=DAUER+1
  107.    DERNAECHSTEBITTE:
  108. Next 
  109. Track Stop 
  110. Erase 6
  111. Erase 1
  112. Screen 0
  113. Screen To Front 
  114. Screen Close 1
  115. Screen Close 2
  116. Screen Close 3
  117. Rem Ende der Introsequenz  
  118. 'PROGRAM  Super Kikstart 
  119. Hide 
  120. Randomize Timer
  121. NODIM=0
  122. FULLNEW:
  123. Sprite Off 
  124. If RESTART=1 Then RESTART=0 : NODIM=1
  125. Screen Open 0,320,256,32,Lowres
  126. Flash Off 
  127. Curs Off 
  128. Load Iff "kikstartplus.iff"
  129. Pen 1
  130. Paper 0
  131. LEVEL=1
  132. Track Load Dir$+"backforfuture.mod",6
  133. Track Loop On 
  134. Track Play 6
  135. Repeat 
  136.    IN$=Inkey$
  137.    If IN$=" " Then HELP
  138.    If IN$="s" Then SHOT
  139.    If IN$="i" Then INFO
  140.    If IN$="L" Then Input "Startlevel:";LEVEL : Ink 0 : Bar 0,0 To 320,8 : Curs Off : Flash Off 
  141.    If IN$="S" Then SONICMODE=1 : MYOFS=$49
  142.    If IN$="q" Then Track Stop : Erase 1 : Erase 3 : Erase 5 : Erase 6 : End 
  143. Until Fire(1)
  144. Track Stop 
  145. Screen Close 0
  146. 'H�heninformation
  147. 42 Data 8,7,6,5,4,3,4,5,6,7,8,6,7,6,4,5,5,6,8,8,6,5,7,7,7,3,3,3,2,2,2,2,2,2,4,2,7,7,7,7,3,3,3,7,7,7,2,7,7,7
  148. 'Ereignisfelder
  149. Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,0,1,0,2,1,0,1,0,0,0,0,1,1,1,1,1,1,0,2,2,2
  150. If NODIM=1 Then Goto ND1
  151. Dim HOEHE(50)
  152. Dim SPECIAL(50)
  153. Dim LIMIT(21)
  154. Dim REQUISITE(21) : Rem 0=nix 1=ballons 2=fl�gelr�der 3=1+2 4=gewitter 
  155. Dim OBJECT(4)
  156. Dim VISIBLE(4)
  157. Dim X#(4),Y#(4),MOVE#(4)
  158. LIMIT(1)=40
  159. REQUISITE(1)=0
  160. LIMIT(2)=25
  161. REQUISITE(2)=1
  162. LIMIT(3)=30
  163. REQUISITE(3)=2
  164. LIMIT(4)=40
  165. REQUISITE(4)=0
  166. LIMIT(5)=30
  167. REQUISITE(5)=4
  168. LIMIT(6)=30
  169. REQUISITE(6)=2
  170. LIMIT(7)=40
  171. REQUISITE(7)=2
  172. LIMIT(8)=30
  173. REQUISITE(8)=1
  174. LIMIT(9)=40
  175. REQUISITE(9)=0
  176. LIMIT(10)=30
  177. REQUISITE(10)=1
  178. LIMIT(11)=30
  179. REQUISITE(11)=0
  180. LIMIT(12)=30
  181. REQUISITE(12)=1
  182. LIMIT(13)=30
  183. REQUISITE(13)=2
  184. LIMIT(14)=30
  185. REQUISITE(14)=2
  186. LIMIT(15)=30
  187. REQUISITE(15)=1
  188. LIMIT(16)=30
  189. REQUISITE(16)=1
  190. LIMIT(17)=30
  191. REQUISITE(17)=1
  192. LIMIT(18)=40
  193. REQUISITE(18)=2
  194. LIMIT(19)=30
  195. REQUISITE(19)=0
  196. LIMIT(20)=40
  197. REQUISITE(20)=1
  198. Get Rom Fonts 
  199. Restore 42
  200. For I=1 To 50
  201.    Read HOEHE(I)
  202. Next 
  203. For I=1 To 50
  204.    Read SPECIAL(I)
  205. Next 
  206. Screen Open 1,320,256,8,Lowres
  207. Colour 1,$0
  208. Dim LEVEL(200)
  209. Dim RE(200)
  210. Flash Off 
  211. Curs Off 
  212. Dim S(10)
  213. Ink 0
  214. Bar 0,0 To 319,255
  215. Def Scroll 1,0,150 To 320,215,-1,0 : Rem Def Scroll 
  216. Def Scroll 2,0,150 To 320,215,-2,0
  217. Def Scroll 3,0,150 To 320,215,-3,0
  218. Rem                                   SOUND! 
  219. S$=""
  220. For I=0 To 127
  221.    S$=S$+Chr$(127)
  222. Next 
  223. For I=128 To 255
  224.    S$=S$+Chr$(255)
  225. Next 
  226. Set Wave 2,S$
  227. Wave 2 To %1111
  228. Set Envel 2,0 To 1,63
  229. Set Envel 2,1 To 5,63
  230. For I=2 To 6
  231.    Set Envel 2,I To 0,0
  232. Next 
  233. ND1:
  234. LIVES=5
  235. PUNKTE=0
  236. JUMP=0
  237. LIMIT#=LIMIT(1)
  238. Tempo 15
  239. If NODIM=1 Then Goto ND2
  240. Dim TITLE$(LEVELS)
  241. ND2:
  242. TITLE$(1)="THE VERY FIRST ONE"
  243. TITLE$(2)="RAILWAY STATION I"
  244. TITLE$(3)="OVER THE RIVER"
  245. TITLE$(4)="THE GREAT WALL"
  246. TITLE$(5)="GLOOMY FOREST"
  247. TITLE$(6)="BUILDING SITE"
  248. TITLE$(7)="RAILWAY STATION II"
  249. TITLE$(8)="TOXIC DRAINS"
  250. TITLE$(9)="COAL MINES"
  251. TITLE$(10)="BONUS"
  252. TITLE$(11)="THE AMIGA"
  253. TITLE$(12)="LED DISPLAY"
  254. TITLE$(13)="MAINFRAME"
  255. TITLE$(14)="WIRED CHAOS"
  256. TITLE$(15)="THE PROCESSOR"
  257. TITLE$(16)="LEGOLAND"
  258. TITLE$(17)="JUST MORE LEGO"
  259. TITLE$(18)="A KID BUILT THIS"
  260. TITLE$(19)="GREAT LEGO WALL"
  261. TITLE$(20)="THE FINAL LEVEL... FOR NOW!"
  262. '                   --- Hier beginnt ein neues Level!
  263. NEWLEVEL:
  264. Sprite Off 
  265. If LEVEL>LEVELS Then OUTRO : RESTART=1 : Goto FULLNEW
  266. BALLONS=0
  267. RAD=0
  268. GEWITTER=0
  269. For I=1 To 4 : VISIBLE(I)=0 : Next 
  270. If Prg State=1 Then REQUISITE(LEVEL)=0
  271. If REQUISITE(LEVEL)=0 Then Goto NOOBJECT
  272. If REQUISITE(LEVEL)=4 Then Goto THUNDER
  273. If REQUISITE(LEVEL)<>2 Then BALLONS=1 : Rem Sprites 2,3,4
  274. If REQUISITE(LEVEL)<>1 Then RAD=1
  275. Goto NOOBJECT : 
  276. THUNDER:
  277. GEWITTER=1
  278. NOOBJECT:
  279. Sprite Off 
  280. If JUMP=1 Then Ink 0 : Bar 0,0 To 320,256 : Sprite Off : Wait Vbl 
  281. Open In 1,"level"+Str$(LEVEL)+".lev"
  282. For I=0 To 200
  283.    Input #1,LEVEL(I)
  284.    Input #1,RE(I)
  285. Next 
  286. Close 1
  287. SET=(LEVEL-1)/5+1
  288. Load "kik"+Str$(SET)+".abk"
  289. Make Mask 
  290. Load "sonic.abk",1
  291. Get Sprite Palette 
  292. Colour 0,$0
  293. MASKOFF
  294. Load "kikmuzak.abk"
  295. Music 1
  296. JUMP=0
  297. X=1
  298. Ink 0
  299. Bar 0,0 To 320,256
  300. Ink 1,0
  301. LEV=LEVEL mod 5
  302. If LEV=0 Then LEV=5
  303. Text 70,70,"WORLD"+Str$(SET)+", LEVEL"+Str$(LEV)+":"
  304. Text 70,86,TITLE$(LEVEL)
  305. Repeat 
  306.    For I=1 To 8
  307.       Scroll 1
  308.       Wait Vbl 
  309.    Next 
  310.    Paste Bob 310,150,LEVEL(X)
  311.    X=X+1
  312.    If X>200 Then X=1
  313. Until Fire(1)
  314. Music Off 
  315. 'Ab hier wird das Startbild gerendert! 
  316. Ink 0,0
  317. Bar 0,0 To 320,256
  318. POS=10
  319. For I=POS-20 To POS+20
  320.    X=I*8+80
  321.    J=I
  322.    If J<0 Then J=J+201
  323.    Paste Bob X,150,LEVEL(J)
  324. Next 
  325. BIKES
  326. ' TIME ab 50, SCORE ab 200 
  327. Rem UPTIME[12.34]
  328. Paste Bob 20,20,55 : Rem   Score hat 7 Stellen
  329. Paste Bob 160,20,56
  330. Rem Paste Bob 232,20,57
  331. 'Los gehts 
  332. 'speed zwischen 6 und 1 (?)  
  333. Ink 0,0
  334. Bar 318,0 To 320,255
  335. SPEED#=0.05
  336. REALPOS#=10
  337. OLDPOS#=10
  338. UPSPEED#=0.0
  339. BRAKE=0
  340. JMP=0 : Rem Sounds...
  341. HIJMP=0
  342. PLOPP=0
  343. VOL=32
  344. GO=0
  345. SC=1
  346. H#=48
  347. NEX=1
  348. FLAG=1
  349. ANI=0
  350. MX#=0.15
  351. Rem Bob Update Off : Rem Weg damit ???????     
  352. Sprite 0,X Hard(146),Y Hard(195-H#),51
  353. Get Sprite Palette 
  354. For I=16 To 28 Step 4
  355.    Colour I+1,$FFF
  356.    Colour I+2,$888
  357.    Colour I+3,$600
  358. Next 
  359. Colour 23,$C00
  360. Colour 27,$990
  361. Colour 30,$33F
  362. If SONICMODE=0 Then Goto NOSONICPALETTE : Rem         S O N I C
  363. Colour 17,$FFF
  364. Colour 18,$66F
  365. Colour 19,$112
  366. NOSONICPALETTE:
  367. Sprite Off 
  368. UPSCORE
  369. IMPLOSION[146,195-H#]
  370. Timer=0
  371. Volume 20
  372. Repeat 
  373.    If BALLONS=0 Then Sprite Off 2 : Sprite Off 3 : Sprite Off 4 : Goto NOBALLONS : 
  374.    If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
  375.    For I=1 To 3
  376.       If BRAKE=1 Then X#(I)=X#(I)-5 : Goto NONEW
  377.       If VISIBLE(I)=0 and Rnd(100)>99.4 Then VISIBLE(I)=1 : MOVE#(I)=INITMOVE : X#(I)=321 : Y#(I)=Rnd(50)+70
  378.       NONEW:
  379.       If VISIBLE(I)=1 Then X#(I)=X#(I)-(SPEED#*10+1) : If X#(I)<-16 Then VISIBLE(I)=0
  380.       Y#(I)=Y#(I)+MOVE#(I) : If Y#(I)>=120 or Y#(I)<=70 Then MOVE#(I)=MOVE#(I)*-1
  381.       If Y#(I)>120 Then Y#(I)=120
  382.       If Y#(I)<70 Then Y#(I)=70
  383.    Next 
  384.    If Sprite Col(0,2 To 4) Then VISIBLE(Col(-1)-1)=0 : PLOPP=60 : PUNKTE=PUNKTE+10 : LIMIT#=LIMIT#+1
  385.    If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
  386.    UPBALLONS
  387.    NOBALLONS:
  388.    If RAD=0 Then Goto NORAD
  389.    If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
  390.    If BRAKE=1 Then X#(4)=X#(4)-5 : Goto NONEW2
  391.    If VISIBLE(4)=0 and Rnd(100)>99.4 Then